Jeg har et datasett som gitt nedenfor navn col1 col2 a 10,3 10,9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 Jeg vil sammenligne col1 og col2 i min df, og jeg vil lage en annen kolonne der mens jeg sammenligner col1- og col2-verdier hvis verdien av col2 øker fra col1, vil jeg legge inn økning ved siden av dem i kolonnen min der, og hvis de avtagende så vil jeg skrive avtagende og ingen endringer hvis de er de samme og jeg vil ha utdataene mine slik navn col1 col2 col3 en økning på 10,3 10,9 b 11 15 økende c 20 7.2 avtagende d 6.2 6.2 ingen endring e 5.3 5.4 øker f 4,5 4,0 avtagende
2021-01-31 08:15:43
Med dplyr: df%>% mutere (Col3 = ifelse (col2 == col1, "ingen endring", ifelse (col2> col1, "økende", "avtagende"))) Eller bruk case_when som foreslått av @akrun: df%>% mutere (Col3 = case_when (col1 == col2 ~ "ingen endring", col2> col1 ~ "Øker", SANT ~ "avtar")) Resultat: navn col1 col2 Col3 1 a 10,3 10,9 økende 2 b 11,0 15,0 økende 3 c 20.0 7.2 avtagende 4 d 6,2 6,2 ingen endring 5 e 5.3 5.4 økende 6 f 4,5 4,0 avtagende Data: df <-struktur (liste (navn = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", rad.names = c (NA, -6L)) | Vi kan trekke col1 av col2 og deretter bruke tegn for å tilordne verdier df $ col3 <- c ("avtagende", "ingen endring", "økende") [tegn (df $ col1 - df $ col2) + 2] df # navn col1 col2 col3 # 1 a 10.3 10.9 synkende # 2 b 11.0 15.0 synkende # 3 c 20.0 7.2 øker # 4 d 6.2 6.2 ingen endring # 5 e 5.3 5.4 avtagende # 6 f 4.5 4.0 øker Eller ved å bruke dplyr kan vi bruke case_when bibliotek (dplyr) df%>% mutere (col3 = case_when (col1 == col2 ~ "ingen endring", col1> col2 ~ "økende", SANT ~ "avtar")) | Base R df $ col3 <-med (df, ifelse (col1> col2, "avtagende", ifelse (col1